package cn.dmp.tags

import org.apache.commons.lang.StringUtils
import org.apache.spark.sql.Row



// 1
/**
  * 打广告和渠道相关的标签
  * 要继承Tags接口
  * 广告位类型（标签格式： LC03->1 或者 LC16->1）xx 为数字，小于 10 补 0 ，把广告位类型名称标记为LNxx
  * 渠道（标签格式： CNxxxx->1）xxxx 为渠道 ID 。（adplatformproviderid）
  */
object Tags4_Ads extends Tags {
  /**
    * 打标签的方法定义。参数是可变的，返回一个Map[String, Int]类型的
    *
    * @param args
    * @return
    */

  override def makeTags(args: Any*): Map[String, Int] = {

    var map = Map[String, Int]()

    // 将传递过来的数据强制转换成Row类型
    val row: Row = args(0).asInstanceOf[Row]

    // 广告位的类型和名称
    val adSpaceType = row.getAs[Int]("Adspacestype")
    val adSpaceTypeName = row.getAs[String]("Adspacetypename")

    if (adSpaceType > 9)
      // 这里的原生Map类型数据的相加只有 += ,+ 没有put方法。并且kv是  "k" -> v这样形式定义的。或者：map += (("CN"+chanelID, 1))
      map += "LC"+adSpaceType -> 1
    else if (adSpaceType >0 )
      map += "LC0"+adSpaceType -> 1

    if (StringUtils.isNotEmpty(adSpaceTypeName))
      map += "LN"+adSpaceTypeName -> 1


    // 渠道的
    val chanelID = row.getAs[Int]("Adplatformproviderid")
    if (chanelID > 0)
      map += (("CN"+chanelID, 1))

    // 最终返回map
    map

  }
}
